package com.huatai.xxljob.dubbo;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.huatai.xxljob.dto.XxlJobDTO;
import com.huatai.xxljob.entity.XxlJobGroupEntity;
import com.huatai.xxljob.entity.XxlJobInfoEntity;
import com.huatai.xxljob.entity.XxlJobLogglueEntity;
import com.huatai.xxljob.vo.XxlJobDictVo;

import java.util.List;

/**
 * @author gusiyi
 * @version 1.0
 * @className XxlJobManagerDubboApi
 * @description 描述：
 * @date 2024/7/3 10:55
 */
public interface XxlJobManagerDubboApi {

	/**
	 * 返回执行器列表
	 * @return
	 */
	List<XxlJobGroupEntity> jobGroupList();

	/**
	 * 分页查询xxljob定时任务
	 * @param xxlJobDto 查询条件
	 * @return
	 */
	IPage<XxlJobInfoEntity> xxlJobInfoPage(XxlJobDTO xxlJobDto);

	/**
	 * 保存或修改xxljob任务
	 * @param xxlJobInfoEntity
	 * @return
	 */
	Boolean saveOrUpdateXxlJob(XxlJobInfoEntity xxlJobInfoEntity);

	/**
	 * 返回调度类型列表
	 * @return
	 */
	List<XxlJobDictVo> scheduleTypeList();

	/**
	 * 返回运行模式列表
	 * @return
	 */
	List<XxlJobDictVo> glueType();

	/**
	 * 获取路由策略列表
	 * @return
	 */
	List<XxlJobDictVo> executorRouteStrategy();

	/**
	 * 调度过期策略列表
	 * @return
	 */
	List<XxlJobDictVo> misfireStrategyList();

	/**
	 * 阻塞处理策略
	 * @return
	 */
	List<XxlJobDictVo> executorBlockStrategy();

	/**
	 * 启动定时任务
	 * @param id
	 * @return
	 */
	Boolean start(Integer id);

	/**
	 * 停止定时任务
	 * @param id
	 * @return
	 */
	Boolean stop(Integer id);

	/**
	 * 触发定时任务
	 * @param xxlJobDTO
	 * @return
	 */
	Boolean trigger(XxlJobDTO xxlJobDTO);

	/**
	 * 脚本代码保存
	 * @param xxlJobDTO
	 * @return
	 */
	Boolean glueIdeSave(XxlJobDTO xxlJobDTO);

	/**
	 * 获取脚本代码列表
	 * @param jobId
	 * @return
	 */
	List<XxlJobLogglueEntity> getGlueSourceList(Integer jobId);

	/**
	 * 删除定时任务
	 * @param id
	 * @return
	 */
	Boolean removeJob(Integer id);

	/**
	 * 获取脚本代码
	 * @param id
	 * @return
	 */
	XxlJobLogglueEntity getGlueSource(Integer id);

}
